package kr.co.bettersoft.sendme.provider;

import java.util.ArrayList;

import kr.co.bettersoft.sendme.activity.R;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

public class SendMeMessageGroupEditAdapter extends BaseAdapter {

	
	private Context context;
	private ArrayList<SendMeFriend> friendList;
	private SendMeFriend friend;
	LayoutInflater layoutInflater;
	
	
	String TAG = "SendMeTempMessageGroupEditAdapter";
	
	View view;
	
	ImageButton delectFromGroupCheckBox;				 
	
	public SendMeMessageGroupEditAdapter(Context context, ArrayList<SendMeFriend> friendList) {
		this.context = context;
		this.friendList = friendList;
		layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}

	@Override
	public int getCount() {
		if(friendList!=null){
			return friendList.size();
		}else{
			return 0;
		}
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return friendList.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		
		view = convertView;
		
		ViewWrapper wrapper = null;
		// 태그를 이용하여 position 값을 정확한 값을 사용하도록 함. 태그를 저장후 나중에 태그값을 꺼내어 사용
		if(view == null) {
			view = layoutInflater.inflate(R.layout.activity_send_me_temp_message_list_group_edit_adapter, parent, false);
			wrapper = new ViewWrapper(view);
			view.setTag(wrapper);
		} else {
			wrapper = (ViewWrapper)view.getTag();
		}
		
		friend = friendList.get(position);
		
		delectFromGroupCheckBox = (ImageButton) view.findViewById(R.id.imageButtonSendCheck);
		delectFromGroupCheckBox.setTag(position);
		
		delectFromGroupCheckBox.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				
				int selectedPosition = Integer.parseInt(v.getTag()+"");
				Log.d(TAG,"selectedPosition:"+selectedPosition);
				if(friendList.get(selectedPosition).getIsSelectedForSend()==false){
					friendList.get(selectedPosition).setSelectedForSend(true);
					v.setBackgroundResource(R.drawable.blue_checkbox_on);
				}else{
					friendList.get(selectedPosition).setSelectedForSend(false);
					v.setBackgroundResource(R.drawable.blue_checkbox_off);
				}
			}
		});
		// 체크 여부에 따라 이미지를 세팅 한다.
		if(friend.getIsSelectedForSend()) {
			delectFromGroupCheckBox.setBackgroundResource(R.drawable.blue_checkbox_on);
		} else {
			delectFromGroupCheckBox.setBackgroundResource(R.drawable.blue_checkbox_off);
		}
		
		// 친구 이름을 세팅 한다.
		wrapper.getTxtViewFriendName().setText(friend.getName());
		
		// 설치 여부에 따라 이미지를 세팅 한다.
		if(("Y").equals(friend.getInstallYn())) {
			wrapper.getImgViewInstall().setVisibility(View.VISIBLE);		// 설치 사용자인지
		} else {
			wrapper.getImgViewInstall().setVisibility(View.INVISIBLE);
		}
		
		return view;
	}
	
	class ViewWrapper {
		View base;
		
		TextView txtViewFriendName;				// 친구 이름.
		ImageView imgViewInstall;				// 설치 여부.
		
		ViewWrapper(View base) {
			this.base = base;
		}
		
		TextView getTxtViewFriendName() {
			if(txtViewFriendName == null) {
				txtViewFriendName = (TextView)view.findViewById(R.id.txtViewFriendName);
			}
			
			return txtViewFriendName;
		}
		
		ImageView getImgViewInstall() {
			if(imgViewInstall == null) {
				imgViewInstall = (ImageView)view.findViewById(R.id.imgViewInstall);
			}
			
			return imgViewInstall;
		}
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
//	
//	
//	private Context context;
//	private ArrayList<SendMeVoice> tempMessageList;
//	private ArrayList<SendMeVoice> tempMessageListOrg;
//	private ArrayList<SendMeVoice> tempMessageListFiltered;
//	
//	private SendMeVoice tempMessage;
//	LayoutInflater layoutInflater;
//	
//	private SendMeTempMessageListActivity receiveTempMessageListActivity;
//	
//	String TAG = "SendMeTempMessageAdapter";
//	
//	View view;
//	
//	ImageButton recordingMenuPlayBtn;
//	ImageButton recordingMenuSendBtn;
//	ImageButton menuDeleteBtn;
//	
//	public SendMeTempMessageGroupEditAdapter(Context context, SendMeTempMessageListActivity receiveTempMessageListActivity, ArrayList<SendMeVoice> tempMessageList) {
//		this.context = context;
//		this.tempMessageList = tempMessageList;
//		this.tempMessageListOrg = tempMessageList;
//		this.receiveTempMessageListActivity = receiveTempMessageListActivity;
//		
//		layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//	}
//
//	// 필터링
//		@Override
//	    public Filter getFilter() {
//
//	        Filter filter = new Filter() {
//
//	            @SuppressWarnings("unchecked")
//	            @Override
//	            protected void publishResults(CharSequence constraint, FilterResults results) {
//	            	// 작업이 끝난후
//	            	// 결과를 세팅하고 갱신
//	            	tempMessageList = (ArrayList<SendMeVoice>) results.values;
//	            	receiveTempMessageListActivity.tempMessageListFiltered = tempMessageList;		// 액티비티로 필터링된 리스트를 전달해준다.
//	                notifyDataSetChanged();
//	            }
//
//	            @Override
//	            protected FilterResults performFiltering(CharSequence constraint) {
//
//	                FilterResults results = new FilterResults();
//	                tempMessageListFiltered = new ArrayList<SendMeVoice>();
//
//	                // perform your search here using the searchConstraint String.
//	                constraint = constraint.toString().toLowerCase();				// 검색어 - 대소문자 무시
//	                
//	                // 원본으로 작업을 함. 기존 tempMessageList를 사용하면 필터링 결과를 가지고 다시 필터링 하므로 결국 아무것도 남지 않게 됨
//	                tempMessageList = tempMessageListOrg;
//	                
//	                if(tempMessageList!=null && tempMessageList.size()>0){
//	                	// 전체 개수 만큼
//		                for (int i = 0; i < tempMessageList.size(); i++) {
//		                	// 비교할 조건을 꺼냄
//		                	SendMeVoice tempSendMeVoice = tempMessageList.get(i);
//		                    String dataNames = tempSendMeVoice.getReceiverName();
//		                    
//		                    // 조건 비교. ~로 시작하는지 / ~를 포함하는지
////		                  if (dataNames.toLowerCase().startsWith(constraint.toString()))  {		// 검색어로 시작할때
//		                	if (dataNames.toLowerCase().contains(constraint.toString()))  {			// 검색어를 포함할때
//		                		// 담는다
//		                    	tempMessageListFiltered.add(tempSendMeVoice);
//		                    }
//		                }
//	                }
//	                
//	                // results 에 저장한다
//	                results.count = tempMessageListFiltered.size();
//	                results.values = tempMessageListFiltered;
////	                Log.e(TAG,"count::"+ tempMessageListFiltered.size());
////	                Log.e(TAG,"VALUES::"+ results.values.toString());
//	                // 반환한다
//	                return results;
//	            }
//	        };
//
//	        return filter;		        // 필터 정의 끝
//	    }
//	
//	
//	@Override
//	public int getCount() {
//		if(tempMessageList!=null){
//			return tempMessageList.size();
//		}else{
//			return 0;
//		}
//	}
//
//	@Override
//	public Object getItem(int position) {
//		// TODO Auto-generated method stub
//		return tempMessageList.get(position);
//	}
//
//
//	@Override
//	public long getItemId(int position) {
//		// TODO Auto-generated method stub
//		return position;
//	}
//
//	@Override
//	public View getView(int position, View convertView, ViewGroup parent) {
//		// TODO Auto-generated method stub
//		
//		view = convertView;
//		
//		ViewWrapper wrapper = null;
//		// 태그를 이용하여 position 값을 정확한 값을 사용하도록 함. 태그를 저장후 나중에 태그값을 꺼내어 사용
//		if(view == null) {
//			view = layoutInflater.inflate(R.layout.activity_send_me_temp_message_list_group_edit_adapter, parent, false);
//			wrapper = new ViewWrapper(view);
//			view.setTag(wrapper);
//		} else {
//			wrapper = (ViewWrapper)view.getTag();
//		}
//		
//		
//		// 버튼들.
//		recordingMenuPlayBtn = (ImageButton) view.findViewById(R.id.recordingMenuPlayBtn);		// 재생 버튼
//		recordingMenuSendBtn = (ImageButton) view.findViewById(R.id.recordingMenuSendBtn);		// 전송 버튼
//		menuDeleteBtn = (ImageButton) view.findViewById(R.id.menuDeleteBtn);					// 삭제 버튼	// 밀어서 지우기 용도
//
//		recordingMenuPlayBtn.setTag(position);
//		recordingMenuSendBtn.setTag(position);
//		menuDeleteBtn.setTag(position);
//			
//		tempMessage = tempMessageList.get(position);
//			
//		// 버튼들 리스너
//		recordingMenuPlayBtn.setOnClickListener(new OnClickListener() {
//		@Override
//		public void onClick(View v) {
//			
//			int selectedPosition = Integer.parseInt(v.getTag()+"");
//			// 직접 던지도록..
//			receiveTempMessageListActivity.playAudioMessage(tempMessageList.get(selectedPosition));
//			}
//		});
//		recordingMenuSendBtn.setOnClickListener(new OnClickListener() {
//		@Override
//		public void onClick(View v) {
////			Log.d(TAG,"v.getTag():"+v.getTag());			// 필터링 이후의 태그 값을 보내기 때문에 문제가 발생한다.. 화면의 리스트까지 그럴수는 없는데..
//			int selectedPosition = Integer.parseInt(v.getTag()+"");
//			receiveTempMessageListActivity.sendAudioMessage(tempMessageList.get(selectedPosition));
//			}
//		});
//		menuDeleteBtn.setOnClickListener(new OnClickListener() {
//			@Override
//			public void onClick(View v) {
//				int selectedPosition = Integer.parseInt(v.getTag()+"");
//				receiveTempMessageListActivity.confirmDelete(tempMessageList.get(selectedPosition));		 
//			}
//		});
//
//		// 친구 이름을 세팅 한다.
//		wrapper.getTxtViewFriendName().setText(tempMessage.getReceiverName());
//		
//		// 삭제 버튼 보일지 여부 
//		if(tempMessage.isShowDeleteBtnYn()){									
//			wrapper.getLayoutButtons1().setVisibility(View.GONE);
//			wrapper.getLayoutButtons2().setVisibility(View.VISIBLE);
//		}else{
//			wrapper.getLayoutButtons1().setVisibility(View.VISIBLE);
//			wrapper.getLayoutButtons2().setVisibility(View.GONE);
//		}
//
//		// 메시지 등록일 표시
//		wrapper.getRegisterDate().setText(tempMessage.getRegisterDate());
//				
//		return view;
//	}
//	
//	class ViewWrapper {
//		View base;
//		
//		TextView txtViewFriendName;				// 친구 이름.
////		ImageButton imageButtonSendCheck;		// 보낼 사람 선택.
//		TextView registerDate;					// 메시지 등록 일
//		
//		View layoutButtons1;			// 기본 버튼 레이아웃
//		View layoutButtons2;			// 삭제 버튼 레이아웃
//		
//		ViewWrapper(View base) {
//			this.base = base;
//		}
////		
//		TextView getTxtViewFriendName() {
//			if(txtViewFriendName == null) {
//				txtViewFriendName = (TextView)view.findViewById(R.id.txtViewFriendName);
//			}
//			return txtViewFriendName;
//		}
//		
//		TextView getRegisterDate() {
//			if(registerDate == null) {
//				registerDate = (TextView)view.findViewById(R.id.registerDate);
//			}
//			
//			return registerDate;
//		}
//		
//		View getLayoutButtons1() {
//			if(layoutButtons1 == null) {
//				layoutButtons1 = (View)view.findViewById(R.id.layout_buttons1);
//			}
//			return layoutButtons1;
//		}
//		
//		View getLayoutButtons2() {
//			if(layoutButtons2 == null) {
//				layoutButtons2 = (View)view.findViewById(R.id.layout_buttons2);
//			}
//			return layoutButtons2;
//		}
////		
////		ImageButton getImageButtonSendCheck() {
////			if(imageButtonSendCheck == null) {
////				imageButtonSendCheck = (ImageButton)view.findViewById(R.id.imageButtonSendCheck);
////			}
////
////			return imageButtonSendCheck;
////		}
//	}

}